Snapshots of filesystems, volumes, databases, and/or other data storage systems may be created to facilitate backing up and restoration of stored data. At the same time, writable versions of snapshots may be used to modify data in the snapshots during testing of the data (e.g., running a number of tests on a copy of a production database) and/or per-user customization of the data (e.g., saving of user data with a base virtual machine disk image used by multiple users).
If a snapshot is writable, modifications to data in the snapshot may be made directly to storage regions allocated to the snapshot. On the other hand, modifications to data in a read-only snapshot may be stored in a separate writable snapshot using a copy-on-write (COW) operation that copies the data to locations allocated to the writable snapshot before the data is modified at the locations. Moreover, the storage system may be required to track dependencies of the snapshots on data in other snapshots to determine when space occupied by the data can be freed.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.